package com.example.yuanboot.service.common;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.yuanboot.model.dto.system.JobAndTrigger;
import com.example.yuanboot.model.dto.system.JobForm;
import com.example.yuanboot.model.vo.page.PageInput;
import org.quartz.SchedulerException;

/**
 * <p>
 * Job Service
 * </p>
 *
 * @author abs
 * @date 2021/3/31 14:22
 */
public interface IQuartzBizService {
    /**
     * 添加并启动定时任务
     *
     * @param form 表单参数 {@link JobForm}
     * @throws Exception 异常
     */
    void addJob(JobForm form) throws SchedulerException;

    /**
     * 删除定时任务去
     *
     * @param form 表单参数 {@link JobForm}
     * @throws SchedulerException 异常
     */
    void deleteJob(JobForm form) throws SchedulerException;

    /**
     * 暂停定时任务
     *
     * @param form 表单参数 {@link JobForm}
     * @throws SchedulerException 异常
     */
    void pauseJob(JobForm form) throws SchedulerException;

    /**
     * 暂停所有任务
     * @author abs
     * @date 2021/4/9 17:46
     */
    void pauseAllJob() throws SchedulerException;

    /**
     * 恢复定时任务
     *
     * @param form 表单参数 {@link JobForm}
     * @throws SchedulerException 异常
     */
    void resumeJob(JobForm form) throws SchedulerException;

    /**
     * 恢复所有任务
     *
     * @author abs
     * @date 2021/4/9 17:57
     */
    void resumeAllJob() throws SchedulerException;

    /**
     * 重新配置定时任务
     *
     * @param form 表单参数 {@link JobForm}
     * @throws SchedulerException 异常
     */
    void updateJob(JobForm form) throws SchedulerException;

    /**
     * 查询定时任务列表
     *
     * @param pageInput 分页参数
     * @return 定时任务列表
     */
    IPage<JobAndTrigger> list(JobForm form, PageInput pageInput);

    /**
     * 执行一次
     * @param form:
     * @return
     * @date 2021/3/25 11:25
     */
    void triggerJob(JobForm form) throws SchedulerException;

}
